package com.facebook.games.fa.model
{
	
	/**
	 * Atributo
	 * @author Diego Maehler <dmaehler@gmail.com>
	 */
	[Bindable]
	public class Attribute
	{
		
		//Nomes para os atributos
		public static const STRENGHT	: String 	= "Força";
		
		public static const AGILITY 	: String	= "Agilidade";
		
		public static const SPEED 		: String	= "Velocidade";
		
		public static const HEIGHT 		: String	= "Altura";

		public static const WEIGHT 		: String	= "Peso";		
		
		
		
		public var id : int;
		
		/**
		 * Nome do atributo
		 */
		public var name : String;
		
		/**
		 * Valor do atributo
		 */
		public var value : Number;
		
		public function Attribute (name : String = null, value : Number = NaN) 
		{
			this.name 	= name;
			this.value 	= value;
		}
		
		/**
		 * Compara o valor deste atributo a outro atributo.
		 * @return
		 * 		-1 - O valor do atributo é maior que o valor deste 
		 * 		0 - Os valores são iguais
		 * 		1 - O valor deste é maior que o do atributo
		 */
		public function compareTo (attribute : Attribute) : int
		{
			if (attribute.value > this.value) {
				return -1;
			} else if (attribute.value == this.value) {
				return 0;
			} else {
				return 1;
			}
		}
		
		/**
		 * Compara os nomes dos atributos, retornando TRUE caso sejam iguais.
		 * @param attribute
		 * @return TRUE | FALSE
		 */
		public function sameAttribute (attribute : Attribute) : Boolean
		{
			return attribute.name == this.name;
		}
		
		/**
		 * Adiciona um valor proveniente de uma carta coringa
		 * @param jokerValue
		 */
		public function increaseValue (jokerValue : Number) : void
		{
			this.value += jokerValue;
		}
		
		/**
		 * Diminui o valor que foi acrescentado por uma carta coringa
		 * @param jokerValue
		 */
		public function decreaseValue (jokerValue : Number) : void
		{
			this.value -= jokerValue;
		}
		
	}
}